#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   Test_PcanSignal.py
@Time    :   2024/05/17 13:31:28
@Author  :   YangLiang 
@Version :   1.0
@Contact :   yangliang@chengtech.com
@License :   (C)Copyright 2022-2025
@Desc    :   None
'''

# here put the import lib
from pickle import FALSE, TRUE
from pytest_assume.plugin import assume
 
import pytest
import time
import requests
from sympy import I
# from sympy import assuming
from commDriver.TS_CAN import *
import allure
import sys
from collections.abc import Iterable

from sqlalchemy import false
sys.dont_write_bytecode = True

import project_CAN
import Set_up


Fault_Injection_DTC_List = [# ([0xAC, 0xE8, 0x76], 'SensorBlindnessDet'),
                            # ([0xAC, 0xE9, 0x76], 'SensorBlindnessDet'),
                            # ([0xAC, 0xE6, 0x55], 'VariantCodeDet'),
                            # ([0xAC, 0xD1, 0x78], 'AlignmentNeverDone'),
                            # ([0xAC, 0xD2, 0x78], 'AlignmentNotDone'),
                            # ([0xAC, 0xEA, 0x94], 'VerticalMisaligment'),
                            # ([0xAC, 0xEB, 0x94], 'HorizontalMisaligment'),
                            ([0xAC, 0xD4, 0x88], 'FactoryDataFail'),
                            ([0xAC, 0xD9, 0x17], 'Rd3_3OV'),
                            ([0xAC, 0xDB, 0x16], 'Rd3_3UV'),
                            ([0xAC, 0xDE, 0x00], 'RadarModulation'),
                            ([0xAC, 0xE1, 0x52], 'SwTempFail'),
                            ([0xAC, 0xE2, 0x4B], 'MasterRdTemp'),  # PASS与FAIL状态不是0与-1.需要输入具体数值
                            ([0xAC, 0xED, 0x00], 'AntDiagram'),
                            ([0xAC, 0xD6, 0x40], 'Watchdog'),                #内部电源管理系统故障 new
                            ([0xAC, 0xD8, 0x04], 'internalHw'),                #内部硬件故障 new
                            ([0xAC, 0xDD, 0x00], 'radarModCfg'),                #雷达调制配置故障 new
                            ([0xAC, 0xDF, 0x52], 'swFail'),                #软件故障 new
                            ([0xAC, 0xE0, 0x00], 'basebandFail'),                #雷达前端数据处理故障 new
                            ]


class Test_PcanSignal(object):

    @allure.severity('normal')
    @allure.title('Test Read MRR SensorDirty From64E in default session with physical addressing')
    @allure.description('Test Read MRR SensorDirty From64E in default session with physical addressing')
    def test_Read_MRR_SensorDirty_From64E_phy(self, action, Driver):
        iStep = 1
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)

        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = respData[4] & 0x01
        else:
            MRR_SensorDirty = respData[5] & 0x01
        logging.info('MRR SensorDirty:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 0

        #产生故障
        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', -1, iStep, True)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = respData[4] & 0x01
        else:
            MRR_SensorDirty = respData[5] & 0x01
        logging.info('MRR SensorDirty:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 1

        #清除故障
        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', 0, iStep, True)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = respData[4] & 0x01
        else:
            MRR_SensorDirty = respData[5] & 0x01
        logging.info('MRR SensorDirty:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 0

        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.severity('normal')
    @allure.title('Test Read MRR Failure From64E in default session with physical addressing')
    @allure.description('Test Read MRR Failure From64E in default session with physical addressing')
    def test_Read_MRR_Failure_From64E_phy(self, action, Driver):
        iStep = 1
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)

        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = (respData[4] & 0xC0) >> 6
        else:
            MRR_SensorDirty = (respData[6] & 0x70) >> 4
        logging.info('MRR Failure:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 2

        #产生故障
        iStep = self.Injection_DTC(Driver, 'AlignmentNotDone', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = (respData[4] & 0xC0) >> 6
        else:
            MRR_SensorDirty = (respData[6] & 0x70) >> 4
        logging.info('MRR Failure:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 2

        #清除故障
        iStep = self.Injection_DTC(Driver, 'AlignmentNotDone', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = (respData[4] & 0xC0) >> 6
        else:
            MRR_SensorDirty = (respData[6] & 0x70) >> 4
        logging.info('MRR Failure:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 1

        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    ids = ["Request {0}".format(binascii.b2a_hex(bytearray(req), ' '), dtcName ) for req, dtcName in Fault_Injection_DTC_List]
    @allure.severity('normal')
    @allure.title('Test Read MRR SGUFail From64E in default session with physical addressing')
    @allure.description('Test Read MRR SGUFail From64E in default session with physical addressing')
    @pytest.mark.parametrize('req,dtcName', Fault_Injection_DTC_List, ids=ids)
    def test_Read_MRR_SGUFail_From64E_phy(self, action, Driver, req, dtcName):
        iStep = 1
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)

        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = (respData[4] & 0x0E) >> 1
        else:
            MRR_SensorDirty = (respData[6] & 0x80) >> 7
        
        logging.info('MRR SGUFail:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 0

        #产生故障
        iStep = self.Injection_DTC(Driver, dtcName, -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = (respData[4] & 0x0E) >> 1
        else:
            MRR_SensorDirty = (respData[6] & 0x80) >> 7
        logging.info('MRR SGUFail:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 1

        #清除故障
        iStep = self.Injection_DTC(Driver, dtcName, 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData,protocol = self.read_Data_from64E_80(Driver)
        if protocol == 0:
            MRR_SensorDirty = (respData[4] & 0x0E) >> 1
        else:
            MRR_SensorDirty = (respData[6] & 0x80) >> 7
        logging.info('MRR SGUFail:[{0}]'.format(MRR_SensorDirty)) 
        with assume: assert MRR_SensorDirty == 0

        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)


    def Injection_DTC(self, Driver, dtcName, generate = -1, iStep = 1, isE976 = False):

        iStep = Driver['CAN'].setVariantCodeDet(Driver,dtcName, generate, iStep)
        time.sleep(0.5)
        if (dtcName == 'SensorBlindnessDet') and (isE976 == True):
            if generate == -1 :
                # 要求行驶里程大于5公里
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x3D9', 'Total_Distance_3D9s5_S',10)
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S', 20)
                Driver['CAN'].read_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S')
                time.sleep(1)
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x3D9', 'Total_Distance_3D9s5_S',16)
                time.sleep(0.5)
            else:
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x3D9', 'Total_Distance_3D9s5_S',0)
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S', 0)
                Driver['CAN'].read_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S')
        time.sleep(0.5)
        iStep = iStep + 1

        return iStep
        


    def read_Data_from64E_80(self, Driver):
        Driver['CAN2'].fush_q_buff()  # 清缓存  
        time.sleep(0.1)
        ALl_data,buffer_size = Driver['CAN2'].read_frame()
        try:
            response_data_64E = ALl_data[ALl_data['AIdentifier'] == 0x64E]
            respData_64E = response_data_64E.iloc[0]['ADatas'][:16]
            respData =  respData_64E
            actuRespStr = binascii.b2a_hex(bytearray(respData), ' ') 
            logging.info('P_CAN responseID:[0x{0:X}], Data:[{1}]'.format(0x64E, actuRespStr))
            protocol = 0
        except:
            response_data_80 = ALl_data[ALl_data['AIdentifier'] == 0x80]
            respData_80 = response_data_80.iloc[0]['ADatas'][:16]
            respData =  respData_80
            actuRespStr = binascii.b2a_hex(bytearray(respData), ' ') 
            logging.info('P_CAN responseID:[0x{0:X}], Data:[{1}]'.format(0x80, actuRespStr)) 
            protocol = 1

        return respData, protocol


class Test_PcanSignal_5E0(object):
    @allure.title('Test DTC ACCE17 at 0x5E0 in default session')
    @allure.description('Test DTC ACCE17 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACCE17_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = Driver['CAN'].SetVolt(Driver, 17, 2, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x1)
        logging.info('DTC ACCE17:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = Driver['CAN'].SetVolt(Driver, 12, 2, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x1)
        logging.info('DTC ACCE17:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.title('Test DTC ACCF16 at 0x5E0 in default session')
    @allure.description('Test DTC ACCF16 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACCF16_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = Driver['CAN'].SetVolt(Driver, 8, 2, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x2) >> 1
        logging.info('DTC ACCF16:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = Driver['CAN'].SetVolt(Driver, 12, 2, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x2) >> 1
        logging.info('DTC ACCF16:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC C07388 at 0x5E0 in default session')
    @allure.description('Test DTC C07388 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C07388_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x4) >> 2
        logging.info('DTC C07388:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC C1D788 at 0x5E0 in default session')
    @allure.description('Test DTC C1D788 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C1D788_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

        Driver['CAN'].S_ConnectCanH_CanL(True, iStep)
        Driver['CAN'].S_ConnectCanH_CanL(False, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x8) >> 3
        logging.info('DTC C1D788:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.title('Test DTC ACD000 at 0x5E0 in default session')
    @allure.description('Test DTC ACD000 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD000_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '2E340101', '6E3401', 3, iStep, True)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x10) >> 4
        logging.info('DTC ACD000:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '2E340100', '6E3401', 0, iStep, False)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x10) >> 4
        logging.info('DTC ACD000:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACD178 at 0x5E0 in default session')
    @allure.description('Test DTC ACD178 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD178_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'AlignmentNeverDone', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x20) >> 5
        logging.info('DTC ACD178:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'AlignmentNeverDone', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x20) >> 5
        logging.info('DTC ACD178:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACD278 at 0x5E0 in default session')
    @allure.description('Test DTC ACD278 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD278_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'AlignmentNotDone', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x40) >> 6
        logging.info('DTC ACD278:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'AlignmentNotDone', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x40) >> 6
        logging.info('DTC ACD278:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACE655 at 0x5E0 in default session')
    @allure.description('Test DTC ACE655 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE655_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'VariantCodeDet', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x80) >> 7
        logging.info('DTC ACE655:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'VariantCodeDet', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[0] & 0x80) >> 7
        logging.info('DTC ACE655:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)


    @allure.title('Test DTC ACE876 at 0x5E0 in default session')
    @allure.description('Test DTC ACE876 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE876_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x1)
        logging.info('DTC ACE876:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x1)
        logging.info('DTC ACE876:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACE976 at 0x5E0 in default session')
    @allure.description('Test DTC ACE976 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE976_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x2) >> 1
        logging.info('DTC ACE976:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x2) >> 1
        logging.info('DTC ACE976:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)


    @allure.title('Test DTC ACEA94 at 0x5E0 in default session')
    @allure.description('Test DTC ACEA94 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACEA94_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'VerticalMisaligment', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x4) >> 2
        logging.info('DTC ACEA94:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'VerticalMisaligment', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x4) >> 2
        logging.info('DTC ACEA94:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.title('Test DTC ACEB94 at 0x5E0 in default session')
    @allure.description('Test DTC ACEB94 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACEB94_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'HorizontalMisaligment', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x8) >> 3
        logging.info('DTC ACEB94:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'HorizontalMisaligment', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x8) >> 3
        logging.info('DTC ACEB94:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACD488 at 0x5E0 in default session')
    @allure.description('Test DTC ACD488 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD488_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'FactoryDataFail', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x10) >> 4
        logging.info('DTC ACD488:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'FactoryDataFail', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x10) >> 4
        logging.info('DTC ACD488:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACD640 at 0x5E0 in default session')
    @allure.description('Test DTC ACD640 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD640_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'Watchdog', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x20) >> 5
        logging.info('DTC ACD640:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'Watchdog', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x20) >> 5
        logging.info('DTC ACD640:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACD804 at 0x5E0 in default session')
    @allure.description('Test DTC ACD804 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD804_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'internalHw', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x40) >> 6
        logging.info('DTC ACD804:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'internalHw', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x40) >> 6
        logging.info('DTC ACD804:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACD917 at 0x5E0 in default session')
    @allure.description('Test DTC ACD917 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACD917_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'Rd3_3OV', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x80) >> 7
        logging.info('DTC ACD917:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'Rd3_3OV', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[1] & 0x80) >> 7
        logging.info('DTC ACD917:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.description('Test DTC ACDB16 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACDB16_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'Rd3_3UV', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x1)
        logging.info('DTC ACDB16:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'Rd3_3UV', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x1)
        logging.info('DTC ACDB16:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.title('Test DTC ACDD00 at 0x5E0 in default session')
    @allure.description('Test DTC ACDD00 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACDD00_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'radarModCfg', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x2) >> 1
        logging.info('DTC ACDD00:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'radarModCfg', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x2) >> 1
        logging.info('DTC ACDD00:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.title('Test DTC ACDE00 at 0x5E0 in default session')
    @allure.description('Test DTC ACDE00 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACDE00_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'RadarModulation', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x4) >> 2
        logging.info('DTC ACDE00:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'RadarModulation', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x4) >> 2
        logging.info('DTC ACDE00:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACDF52 at 0x5E0 in default session')
    @allure.description('Test DTC ACDF52 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACDF52_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'swFail', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x8) >> 3
        logging.info('DTC ACDF52:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'swFail', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x8) >> 3
        logging.info('DTC ACDF52:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACE000 at 0x5E0 in default session')
    @allure.description('Test DTC ACE000 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE000_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'basebandFail', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x10) >> 4
        logging.info('DTC ACE000:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'basebandFail', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x10) >> 4
        logging.info('DTC ACE000:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACE152 at 0x5E0 in default session')
    @allure.description('Test DTC ACE152 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE152_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'SwTempFail', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x20) >> 5
        logging.info('DTC ACE152:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'SwTempFail', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x20) >> 5
        logging.info('DTC ACE152:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)


    @allure.title('Test DTC ACE24B at 0x5E0 in default session')
    @allure.description('Test DTC ACE24B at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE24B_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'MasterRdTemp', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x40) >> 6
        logging.info('DTC ACE24B:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'MasterRdTemp', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x40) >> 6
        logging.info('DTC ACE24B:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACED00 at 0x5E0 in default session')
    @allure.description('Test DTC ACED00 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACED00_in5E0_default_Phy(self,action,Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.Injection_DTC(Driver, 'AntDiagram', -1, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x80) >> 7
        logging.info('DTC ACED00:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.Injection_DTC(Driver, 'AntDiagram', 0, iStep)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[2] & 0x80) >> 7
        logging.info('DTC ACED00:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC C1A887 at 0x5E0 in default session')
    @allure.description('Test DTC C1A887 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C1A887_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.setSignalEanble(Driver,'Left_BCM_0x12D', False, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x1)
        logging.info('DTC C1A887:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalEanble(Driver,'Left_BCM_0x12D', True, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x1)
        logging.info('DTC C1A887:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC 5C6762 at 0x5E0 in default session')
    @allure.description('Test DTC 5C6762 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_5C6762_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].set_0x12D_checksum_error(True)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x2) >> 1
        logging.info('DTC 5C6762:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x12D_checksum_error(False)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x2) >> 1
        logging.info('DTC 5C6762:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC 5C6602 at 0x5E0 in default session')
    @allure.description('Test DTC 5C6602 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_5C6602_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].set_0x12D_rolling_counter_error(True)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x4) >> 2
        logging.info('DTC 5C6602:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x12D_rolling_counter_error(False)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x4) >> 2
        logging.info('DTC 5C6602:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC 5C6586 at 0x5E0 in default session')
    @allure.description('Test DTC 5C6586 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_5C6586_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x12D', 'BCMPower_Gear_12D_S', 0)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x8) >> 3
        logging.info('DTC 5C6586:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x12D', 'BCMPower_Gear_12D_S', 3)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x8) >> 3
        logging.info('DTC 5C6586:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)


    @allure.title('Test DTC C24500 at 0x5E0 in default session')
    @allure.description('Test DTC C24500 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C24500_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.setSignalEanble(Driver, 'Media_0x2B6', False, iStep)
        time.sleep(3)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x10) >> 4
        logging.info('DTC C24500:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalEanble(Driver, 'Media_0x2B6', True, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x10) >> 4
        logging.info('DTC C24500:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC D0C286 at 0x5E0 in default session')
    @allure.description('Test DTC D0C286 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_D0C286_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.setSignalEanble(Driver, 'VCU_0x342', False, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x20) >> 5
        logging.info('DTC D0C286:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalEanble(Driver, 'VCU_0x342', True, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x20) >> 5
        logging.info('DTC D0C286:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC D27183 at 0x5E0 in default session')
    @allure.description('Test DTC D27183 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_D27183_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].set_0x342_checksum_error(True)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x40) >> 6
        logging.info('DTC D27183:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x342_checksum_error(False)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x40) >> 6
        logging.info('DTC D27183:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC D27182 at 0x5E0 in default session')
    @allure.description('Test DTC D27182 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_D27182_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].set_0x342_rolling_counter_error(True)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x80) >> 7
        logging.info('DTC D27182:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x342_rolling_counter_error(False)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[3] & 0x80) >> 7
        logging.info('DTC D27182:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC C19780 at 0x5E0 in default session')
    @allure.description('Test DTC C19780 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C19780_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.setSignalEanble(Driver, 'IPB_0x121', False, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x1)
        logging.info('DTC C19780:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalEanble(Driver, 'IPB_0x121', True, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x1)
        logging.info('DTC C19780:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC 5C6462 at 0x5E0 in default session')
    @allure.description('Test DTC 5C6462 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_5C6462_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].set_0x121_checksum_error(True)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x2) >> 1
        logging.info('DTC 5C6462:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x121_checksum_error(False)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x2) >> 1
        logging.info('DTC 5C6462:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC 5C6302 at 0x5E0 in default session')
    @allure.description('Test DTC 5C6302 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_5C6302_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        Driver['CAN'].set_0x1F0_rolling_counter_error(True)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x4) >> 2
        logging.info('DTC 5C6302:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x1F0_rolling_counter_error(False)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x4) >> 2
        logging.info('DTC 5C6302:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC 5C6286 at 0x5E0 in default session')
    @allure.description('Test DTC 5C6286 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_5C6286_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

        iStep = self.setSignalValue(Driver, 'IPB_0x222', 'Yaw_Rate_Signal_S', 2.096, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x8) >> 3
        logging.info('DTC 5C6286:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalValue(Driver, 'IPB_0x222', 'Yaw_Rate_Signal_S', 0, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x8) >> 3
        logging.info('DTC 5C6286:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC C13400 at 0x5E0 in default session')
    @allure.description('Test DTC C13400 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C13400_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

        iStep = self.setSignalEanble(Driver, 'EPS_0x11F', False, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x10) >> 4
        logging.info('DTC C13400:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalEanble(Driver, 'EPS_0x11F', True, iStep)
        time.sleep(1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x10) >> 4
        logging.info('DTC C13400:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC C42083 at 0x5E0 in default session')
    @allure.description('Test DTC C42083 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C42083_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

        Driver['CAN'].set_0x11F_checksum_error(True)
        time.sleep(0.1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x20) >> 5
        logging.info('DTC C42083:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x11F_checksum_error(False)
        time.sleep(0.1)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x20) >> 5
        logging.info('DTC C42083:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    @allure.title('Test DTC C42082 at 0x5E0 in default session')
    @allure.description('Test DTC C42082 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_C42082_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

        Driver['CAN'].set_0x11F_rolling_counter_error(True)
        time.sleep(0.5)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x40) >> 6
        logging.info('DTC C42082:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        Driver['CAN'].set_0x11F_rolling_counter_error(False)
        time.sleep(0.5)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x40) >> 6
        logging.info('DTC C42082:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC D01786 at 0x5E0 in default session')
    @allure.description('Test DTC D01786 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_D01786_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
        iStep = self.setSignalValue(Driver, 'EPS_0x11F', 'Steering_Wheel_Angle_S', 780, iStep)
        time.sleep(0.5)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x80) >> 7
        logging.info('DTC D01786:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        iStep = self.setSignalValue(Driver, 'EPS_0x11F', 'Steering_Wheel_Angle_S', 0, iStep)
        time.sleep(0.5)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[4] & 0x80) >> 7
        logging.info('DTC D01786:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    # @allure.title('Test DTC D11886 at 0x5E0 in default session')
    # @allure.description('Test DTC D11886 at 0x5E0 in default sessionin with physical addressing')
    # @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    # def test_DTC_D11886_in5E0_default_Phy(self, action, Driver):
    #     iStep = 1
    #     iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)
    #     iStep = self.setSignalEanble(Driver, 'MPC_0x374', False, iStep)
    #     iStep = self.setSignalEanble(Driver, 'MPC_0x295', False, iStep)
    #     time.sleep(0.8)
    #     iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
    #     respData = self.read_Data_from5E0(Driver)
    #     MRR_Value = (respData[5] & 0x1)
    #     logging.info('DTC D11886:[{0}]'.format(MRR_Value)) 
    #     with assume: assert MRR_Value == 1

    #     iStep = self.setSignalEanble(Driver, 'MPC_0x374', True, iStep)
    #     iStep = self.setSignalEanble(Driver, 'MPC_0x295', True, iStep)
    #     time.sleep(0.5)
    #     iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
    #     respData = self.read_Data_from5E0(Driver)
    #     MRR_Value = (respData[5] & 0x1)
    #     logging.info('DTC D11886:[{0}]'.format(MRR_Value)) 
    #     with assume: assert MRR_Value == 0

    #     iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    
    @allure.title('Test DTC ACE876 at 0x5E0 in default session')
    @allure.description('Test DTC ACE876 at 0x5E0 in default sessionin with physical addressing')
    @allure.testcase('Test cases address:https://chengtech.pingcode.com/testhub/libraries/630357052177ea2394680877/cases')
    def test_DTC_ACE876_in5E0_default_Phy(self, action, Driver):
        iStep = 1
        iStep,uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[6] & 0x3)
        logging.info('DTC ACE876:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 0

        #产生故障
        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', -1, iStep, True)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[6] & 0x3)
        logging.info('DTC ACE876:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 1

        #清除故障
        iStep = self.Injection_DTC(Driver, 'SensorBlindnessDet', 0, iStep, True)
        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '19 02 09', '59 02', 0, iStep)
        respData = self.read_Data_from5E0(Driver)
        MRR_Value = (respData[6] & 0x3)
        logging.info('DTC ACE876:[{0}]'.format(MRR_Value)) 
        with assume: assert MRR_Value == 2

        iStep, uds_resp, size = Driver['CAN'].checkReqResp(Driver, '14 FF FF FF', '54', 0, iStep)

    

    def read_Data_from5E0(self, Driver):
        # 打开原始点
        Driver['CAN2'].send_Frame(0x300,[0x31, 0x58, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00],'CAN')
        time.sleep(0.2)
        Driver['CAN2'].send_Frame(0x200,[0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],'CAN')
        time.sleep(0.2)
        Driver['CAN2'].fush_q_buff()  # 清缓存  
        time.sleep(0.2)
        ALl_data,buffer_size = Driver['CAN2'].read_frame()
        try:
            response_data = ALl_data[ALl_data['AIdentifier'] == 0x5E0]
            respData = response_data.iloc[0]['ADatas'][:16]
        except:
            respData = [0]
        
        actuRespStr = binascii.b2a_hex(bytearray(respData), ' ') 
        logging.info('P_CAN responseID:[0x{0:X}], Data:[{1}]'.format(0x5E0, actuRespStr)) 

        # 关闭原始点
        Driver['CAN2'].send_Frame(0x300,[0x31, 0x58, 0xAF, 0x80, 0x00, 0x00, 0x00, 0x00],'CAN')
        Driver['CAN2'].send_Frame(0x200,[0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00],'CAN')

        return respData


    '''设置信号使能状态'''
    def setSignalEanble(self, Driver, message, status, iStep):
        with allure.step(f'Step{iStep}: set the {message} status to {status}'):
            Driver['CAN'].Enable_rbs_message('Vehicle_CAN','BCM', message, status)
        iStep += 1
        return iStep


    '''设置信号值'''
    def setSignalValue(Self, Driver, message, signal, value, iStep):
        with allure.step(f'Step{iStep}: set the value of the {signal} in {message} to {value}'):
            Driver['CAN'].write_db_signal('Vehicle_CAN','BCM', message, signal, value)
            time.sleep(0.2)
            iStep += 1
            readValue = Driver['CAN'].read_db_signal('Vehicle_CAN','BCM', message, signal)
        return iStep

    
    def Injection_DTC(self, Driver, dtcName, generate = -1, iStep = 1, isE976 = False):

        iStep = Driver['CAN'].setVariantCodeDet(Driver,dtcName, generate, iStep)
        time.sleep(0.5)
        if (dtcName == 'SensorBlindnessDet') and (isE976 == True):
            if generate == -1 :
                # 要求行驶里程大于5公里
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x3D9', 'Total_Distance_3D9s5_S',10)
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S', 20)
                Driver['CAN'].read_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S')
                time.sleep(1)
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x3D9', 'Total_Distance_3D9s5_S',16)
                time.sleep(0.5)
            else:
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'Left_BCM_0x3D9', 'Total_Distance_3D9s5_S',0)
                Driver['CAN'].write_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S', 0)
                Driver['CAN'].read_db_signal('Vehicle_CAN', 'BCM', 'IPB_0x121', 'IPB_Vehicle_Speed_S')
        time.sleep(0.5)
        iStep = iStep + 1

        return iStep